#
#  Util.rb
#  WOVConverter
#
#  Created by James Tuley on 4/23/08.
#  Copyright (c) 2008 __MyCompanyName__. All rights reserved.
#
# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
#
# The contents of this file are subject to the Mozilla Public License Version
# 1.1 (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
# http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
# for the specific language governing rights and limitations under the
# License.
#
# The Original Code is WOV Suite.
#
# The Initial Developer of the Original Code is
# James Tuley.
# Portions created by the Initial Developer are Copyright (C) 2008
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#           James Tuley <jay+wov@tuley.name> (WOV Suite Author)
#
# Alternatively, the contents of this file may be used under the terms of
# either the GNU General Public License Version 2 or later (the "GPL"), or
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK ***** */
require 'osx/cocoa'
require 'fileutils' 

class WOVUtil

	include OSX

	INFO_KIND ="WOV Movie Wrapper"
	INFO_MAJOR_VER = 2
	INFO_MINOR_VER = 0


	def WOVUtil.helperPath
		return NSBundle.mainBundle.resourcePath.stringByAppendingPathComponent("wov_helper")
	end
	
	def WOVUtil.infoPlistPathForWOV(aWOVDir)
		return File.join(aWOVDir,"Info.plist")
	end
	
	def WOVUtil.writeInfoPList(aWOVDir,anOrigFile,aNewFile,aRestorableFiles)
		tDict = NSDictionary.dictionaryWithObjectsAndKeys(	anOrigFile,"Standard",
														  aNewFile,"Moov",
														  aRestorableFiles, "Restore",
														  INFO_KIND, "Kind",
														  INFO_MAJOR_VER,"MajorVersion",
														  INFO_MINOR_VER,"MinorVersion",nil)
		
		tDict.writeToFile_atomically(WOVUtil.infoPlistPathForWOV(aWOVDir),true)
	end
	

	
	def WOVUtil.nonCollidingPath(aNewPath)
		if(File.exists? aNewPath)
			return self.nonCollidingPathRecurse(aNewPath,1)
		else
			return aNewPath
		end
	end
	
	def WOVUtil.rubyPathByDeletingExtension(aPath)
		return File.join(File.dirname(aPath),File.basename(aPath,File.extname(aPath))) 
	end
	
	def WOVUtil.safeTrash(aPath)
		tInt =0
		unless( NSWorkspace.sharedWorkspace.performFileOperation_source_destination_files_tag_(NSWorkspaceRecycleOperation,
																		File.dirname(aPath),
																		"",
																		[File.basename(aPath)],
																		 nil))
			FileUtils.mv(aPath,WOVUtil.nonCollidingPath(aPath+".trash"))
		end
	
	end
		
	private
	
	def WOVUtil.nonCollidingPathRecurse(anOriginalPath,anIteration)
			tNewPath = self.rubyPathByDeletingExtension(anOriginalPath) + "." + anIteration.to_s + File.extname(anOriginalPath);
			unless(File.exists? tNewPath)
				return tNewPath
			else
				anIteration=anIteration+1
				return self.nonCollidingPathRecurse(anOriginalPath,anIteration)
			end
	end
	
end
